#include "thread_pool.h"
#include <unistd.h>

// 示例工作任务
void* example_task(void* arg) {
    int task_id = *(int*)arg;
    printf("任务 %d 开始执行，线程ID: %lu\n", task_id, pthread_self());

    // 模拟工作负载
    sleep(2);

    printf("任务 %d 执行完成\n", task_id);
    free(arg); // 释放任务参数内存
    return NULL;
}

int main() {
    // 1. 创建线程池
    tp_thread_pool* pool = create_thread_pool(3, 10);
    if (pool == NULL) {
        printf("创建线程池失败\n");
        return -1;
    }

    // 2. 添加任务
    printf("添加任务到线程池...\n");
    for (int i = 0; i < 15; i++) {
        int* task_id = (int*)malloc(sizeof(int));
        *task_id = i;

        if (tp_add_job(pool, example_task, task_id) != 0) {
            printf("添加任务 %d 失败\n", i);
            free(task_id);
        } else {
            printf("成功添加任务 %d\n", i);
        }

        usleep(100000); // 100ms间隔
    }

    // 3. 等待一段时间让任务执行
    printf("等待任务执行...\n");
    sleep(10);

    // 4. 销毁线程池
    tp_destroy(pool);

    printf("程序结束\n");
    return 0;
}